/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entitys;

import control_package.BussinesControl;
import java.io.Serializable;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author RIVERA
 */
@Entity
@Table(name = "producto_general", catalog = "drugstore", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ProductoGeneral.findAll", query = "SELECT p FROM ProductoGeneral p"),
    @NamedQuery(name = "ProductoGeneral.findByIdProducto", query = "SELECT p FROM ProductoGeneral p WHERE p.idProducto = :idProducto"),
    @NamedQuery(name = "ProductoGeneral.findByIdProductoNombre", query = "SELECT p FROM ProductoGeneral p WHERE p.idProducto = :idProducto AND p.nombreProducto = :nombreProducto"),
    @NamedQuery(name = "ProductoGeneral.findByNombreProducto", query = "SELECT p FROM ProductoGeneral p WHERE p.nombreProducto = :nombreProducto"),
    @NamedQuery(name = "ProductoGeneral.findByPrecioProducto", query = "SELECT p FROM ProductoGeneral p WHERE p.precioProducto = :precioProducto"),
    @NamedQuery(name = "ProductoGeneral.findByCantidadProducto", query = "SELECT p FROM ProductoGeneral p WHERE p.cantidadProducto = :cantidadProducto"),
    @NamedQuery(name = "ProductoGeneral.findByIdTipoProducto", query = "SELECT p FROM ProductoGeneral p WHERE p.idTipoProducto = :idTipoProducto"),
    @NamedQuery(name = "ProductoGeneral.findByIdFabricante", query = "SELECT p FROM ProductoGeneral p WHERE p.idFabricante = :idFabricante"),
    @NamedQuery(name = "ProductoGeneral.findByIdPresentacion", query = "SELECT p FROM ProductoGeneral p WHERE p.idPresentacion = :idPresentacion"),
    @NamedQuery(name = "ProductoGeneral.findByVentaLibre", query = "SELECT p FROM ProductoGeneral p WHERE p.ventaLibre = :ventaLibre")})
public class ProductoGeneral implements Serializable {
    
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_PRODUCTO", nullable = false)
    private Long idProducto;
    @Basic(optional = false)
    @Column(name = "NOMBRE_PRODUCTO", nullable = false, length = 80)
    //Se aumento el tamaño de la variable de 50 a 80
    private String nombreProducto;
    @Basic(optional = false)
    @Column(name = "PRECIO_PRODUCTO", nullable = false)
    private float precioProducto;
    @Basic(optional = false)
    @Column(name = "CANTIDAD_PRODUCTO", nullable = false)
    private int cantidadProducto;
    @Basic(optional = false)
    @Column(name = "ID_TIPO_PRODUCTO", nullable = false)
    private int idTipoProducto;
    @Basic(optional = false)
    @Column(name = "ID_FABRICANTE", nullable = false)
    private int idFabricante;
    @Column(name = "ID_PRESENTACION")
    private Integer idPresentacion;
    @Column(name = "VENTA_LIBRE")
    private Boolean ventaLibre;

    public ProductoGeneral() {
    }
    
    public ProductoGeneral(Long idProducto) {
        this.idProducto = idProducto;
    }

    public ProductoGeneral(String nombreProducto, float precioProducto, int cantidadProducto, int idTipoProducto, int idFabricante) {
        
        this.nombreProducto = nombreProducto;
        this.precioProducto = precioProducto;
        this.cantidadProducto = cantidadProducto;
        this.idTipoProducto = idTipoProducto;
        this.idFabricante = idFabricante;
        
    }

    public Long getIdProducto() {
        return idProducto;
    }

    public void setIdProducto(Long idProducto) {
        this.idProducto = idProducto;
    }

    public String getNombreProducto() {
        return nombreProducto;
    }

    public void setNombreProducto(String nombreProducto) {
        this.nombreProducto = nombreProducto;
    }

    public float getPrecioProducto() {
        return precioProducto;
    }

    public void setPrecioProducto(float precioProducto) {
        this.precioProducto = precioProducto;
    }

    public int getCantidadProducto() {
        return cantidadProducto;
    }

    public void setCantidadProducto(int cantidadProducto) {
        this.cantidadProducto = cantidadProducto;
    }

    public int getIdTipoProducto() {
        return idTipoProducto;
    }

    public void setIdTipoProducto(int idTipoProducto) {
        this.idTipoProducto = idTipoProducto;
    }

    public int getIdFabricante() {
        return idFabricante;
    }

    public void setIdFabricante(int idFabricante) {
        this.idFabricante = idFabricante;
    }

    public Integer getIdPresentacion() {
        return idPresentacion;
    }

    public void setIdPresentacion(Integer idPresentacion) {
        this.idPresentacion = idPresentacion;
    }

    public Boolean getVentaLibre() {
        return ventaLibre;
    }

    public void setVentaLibre(Boolean ventaLibre) {
        this.ventaLibre = ventaLibre;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProducto != null ? idProducto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ProductoGeneral)) {
            return false;
        }
        ProductoGeneral other = (ProductoGeneral) object;
        if ((this.idProducto == null && other.idProducto != null) || (this.idProducto != null && !this.idProducto.equals(other.idProducto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        String fab= new BussinesControl().searchVendorName(idProducto);
        String chain= "Nombre: "+this.nombreProducto+" Precio: "+this.precioProducto+" Cantidad: "+ this.cantidadProducto + " Fabricante: "+fab+ " Tipo: "+new BussinesControl().searchTypeName(idProducto) +".";
        return chain;
    }
    
}
